It has long been recognized that the major cost in utilizing digital computers to control real-time processes is in the development cost of programs. Most programming languages such as Pascal and BASIC are sequential in nature. During the initial programming of a computer system, such languages require the programmer to determine the actions to be taken in response to stimulus or signals from the real-time processes by a sequence of program instructions. Typically, such languages require that the programmer write statements that bear little resemblance to the controlled process. Thereafter, when program changes are required, the programmer must find the correct place within the program to insert the changes. Obviously, implementation of such change procedures require extensive knowledge of the program to that extent it is difficult for anyone but an expert who has intimate knowledge of the program to make changes to that program. The requirement that only expert programmers be able to make such changes has long been recognized as unduly costly and complex, particularly where it is desirable to customize different aspects of the program for individual customers. Programmability by individual customers is virtually impossible using sequential language.
Program controlled systems used for the realtime switching of information for data and voice calls have long been plagued by such requirements with aforementioned disadvantages. In such a switching system, it is often desirable to tailor the services provided by the system on an individual telephone-by-telephone basis. Past telephone switching systems that utilized sequential type languages were only able to do this on a feature-by-feature basis as is illustrated in the article by H. K. Woodland, G. A. Reisner, and A. S. Melamed, "System Management," AT&T Technical Journal. Vol. 64, No. 1, January, 1985.
One proposal to overcome the problem associated with sequential languages is described in the article by J. M. Ginsparg and R. D. Gorden, "Automatic Programming of Communication Software Via Non-Procedural Descriptions", IEEE Transactions on Communications. Vol. COM-30, No. 6, June, 1982. This article discloses a programming language for writing programs to control a telephone switching system. Such programs are written in terms of the possible states of the system, occurrences of events within the system, and actions to be taken when defined events and states occur. After program statements are written in that language, they are then translated to the C programming language and compiled and stored within the computer controlling the telephone switching system. Whereas, this language does allow the statements to explicitly designate the action to be taken in response to a given event in a given state, no provision is made for either the structural control of feature interaction or the activation or deactivation of features in an operational system in order to meet the changing functional, real-time requirements of the system.
Another approach is the Specification and Description Language, SDL, that is currently being defined by a CCITT committee. The SDL language is described in the article, "SDL-CCITT Specification and Description Language," IEEE Transactions on Communications." Vol. Com-30, No. 6, June, 1982, by A. Rockstrom and R. Saracco, and the CCITT specifications are set forth in Recommendations Z101-104, CCITT Yellow Book, International Telecommunication Union, Geneva, Switzerland, 1981. The SDL language allows a formal description of services and features in terms of state and telecommunication signal information. Manufacturers of telecommunication systems then implement that formal description in the language of their choice, such as CHILL or C. The SDL description itself is not directly compiled. In addition, SDL does not have efficient feature interaction control mechanisms.
Such prior art has described nonprocedural languages, but these languages suffer from the problem that they are incapable of grouping instructions into well-defined functions or features that can be activated and deactivated during the operation of the system under control of other features and also because they do not provide a means for controlling the interactions among different features that relate to similar operations within the real-time system. In particular, these languages do not allow for the explicit designation of precedence between features or the ability to disable and enable a feature.